Usaremos los datos simulados de un ensayo clínico para evaluar la seguridad de un suplemento en outcomes clinico y fisiologicos de mujeres con menopausia:
id
time
treat
treated
age
race
married2
procedence
weight
height
e2
1
Baseline
Placebo
0
33
Mestiza
Without couple
Callao
59.0
1.4
87.30
1
3 months
Placebo
0
32
Mestiza
Without couple
Callao
59.9
1.3
210.05
2
Baseline
Dosis 2
1
27
Mestiza
Without couple
Santa Anita
62.0
1.5
169.01
2
3 months
Dosis 2
1
27
Mestiza
Without couple
Santa Anita
62.1
1.6
99.91
3
Baseline
Dosis 1
1
25
Mestiza
Without couple
Callao
62.0
1.6
78.76
3
3 months
Dosis 1
1
25
Mestiza
Without couple
Callao
60.0
1.6
155.04
Las etiquetas de cada variable son:
Variable
Label
id
ID participant
time
Time's measurement
treat
Treatment's group
treated
Treated
age
Age, years
race
Race
married2
Marital status, recat
procedence
Distrit of procedence
weight
Weight, kg
height
Height, m
e2
Estradiol
tbl_summary() paso a paso
Agenda
Reporte Reproducible
tbl_summary() paso a paso
gtsummary: tbl_summary y argumento by =
Buenas y malas prácticas de reporte en investigación
Misceláneas
tbl_summary() paso a paso
tbl_summary() básico
Seleccionar las variables que desea reportar con función select(), luego usar tbl_summary():
Cuarto tipo de resumenes: continuous, continuos2, categorical y dichotomous
Por defecto, los estadísticos son reportadas como mediana (percentil 25, percentil 75) para variables numéricas y n (%) para variables categóricas/dicotómicas.
Las variables codificadas como 0 / 1, TRUE / FALSE o Yes / No son tratadas como dicotómicas.
Los valores NA se listan como “Unknown
Los atributos de etiqueta se imprimen por defecto.
Uno puede realizar más personalizaciones a la tabla.
Personalización del resultado de tbl_summary()
datos %>%select(age, treated, married2, height, e2) %>%tbl_summary()
Personalización del resultado de tbl_summary()
datos %>%select(age, treated, married2, height, e2) %>%tbl_summary(type =list(height ~"continuous") )
type: Especifica el tipo de variable para el resumen
type: Especifica el tipo de variable para resumen.
Queremos reportar varios estadísticos para edad
statistic: Personaliza los estadísticos reportados.
Indicamos qué estadísticos queremos reportar para edad.
Queremos reportar media y DE para IgG Basal.
Personalizar tbl_summary() paso a paso
bd_inmuno %>%select(edad, tdosis_refuerzo, IgG_Basal, IgG_Final, sexo) %>%tbl_summary(by = sexo, type =list(edad ~"continuous2"), statistic =list( edad ~c("{mean} ± {sd}", "{median} ({p25}, {p75})"), IgG_Basal ~"{mean} ± {sd}" ), label =list( edad ~"Age, years", tdosis_refuerzo ~"Time between second and third dose", IgG_Basal ~"IgG pre booster", IgG_Final ~"IgG post booster" ))
type: Especifica el tipo de variable para resumen.
Queremos reportar varios estadísticos para edad
statistic: Personaliza los estadísticos reportados.
Indicamos qué estadísticos queremos reportar para edad.
Queremos reportar media y DE para IgG Basal.
label Personaliza las etiquetas de variable.
Personalizar tbl_summary() paso a paso
bd_inmuno %>%select(edad, tdosis_refuerzo, IgG_Basal, IgG_Final, sexo) %>%tbl_summary(by = sexo, type =list(edad ~"continuous2"), statistic =list( edad ~c("{mean} ± {sd}", "{median} ({p25}, {p75})"), IgG_Basal ~"{mean} ± {sd}" ), label =list( edad ~"Age, years", tdosis_refuerzo ~"Time between second and third dose", IgG_Basal ~"IgG pre booster", IgG_Final ~"IgG post booster" ), digits =list(c(IgG_Final, IgG_Basal) ~2 ))
type: Especifica el tipo de variable para resumen.
statistic: Personaliza los estadísticos reportados.
label Personaliza las etiquetas de variable.
digits: Controla el número de decimales de redondeo.
Permitir que IgG (basal y final) se reporten con solo 2 decimales.
Personalizar tbl_summary() paso a paso
bd_inmuno %>%select(edad, tdosis_refuerzo, IgG_Basal, IgG_Final, sexo) %>%tbl_summary(by = sexo, type =list(edad ~"continuous2"), statistic =list( edad ~c("{mean} ± {sd}", "{median} ({p25}, {p75})"), IgG_Basal ~"{mean} ± {sd}" ), label =list( edad ~"Age, years", tdosis_refuerzo ~"Time between second and third dose", IgG_Basal ~"IgG pre booster", IgG_Final ~"IgG post booster" ), digits =list(c(IgG_Final, IgG_Basal) ~2, edad ~c(1, 2, 1, 2) ))
type: Especifica el tipo de variable para resumen.
statistic: Personaliza los estadísticos reportados.
label Personaliza las etiquetas de variable.
digits: Controla el número de decimales de redondeo.
Edad que se reporte con 1 decimal la media y media y 2 decimales la SD y el IQR.
Más personalización de tbl_summary() con add_()
bd_inmuno %>%select(edad, tdosis_refuerzo, IgG_Basal, IgG_Final, sexo) %>%tbl_summary(by = sexo, type =list(edad ~"continuous2"), label =list( edad ~"Age, years", tdosis_refuerzo ~"Time between second and third dose", IgG_Basal ~"IgG pre booster", IgG_Final ~"IgG post booster" ))
Más personalización de tbl_summary() con add_()
bd_inmuno %>%select(edad, tdosis_refuerzo, IgG_Basal, IgG_Final, sexo) %>%tbl_summary(by = sexo, type =list(edad ~"continuous2"), label =list( edad ~"Age, years", tdosis_refuerzo ~"Time between second and third dose", IgG_Basal ~"IgG pre booster", IgG_Final ~"IgG post booster" )) %>%add_overall()
add_overall: Agrega una columna con el resumen de características para toda la población de estudio.
Más personalización de tbl_summary() con add_()
bd_inmuno %>%select(edad, tdosis_refuerzo, IgG_Basal, IgG_Final, sexo) %>%tbl_summary(by = sexo, type =list(edad ~"continuous2"), label =list( edad ~"Age, years", tdosis_refuerzo ~"Time between second and third dose", IgG_Basal ~"IgG pre booster", IgG_Final ~"IgG post booster" )) %>%add_overall() %>%add_n()
add_overall: Agrega una columna con el resumen de características para toda la población de estudio.
add_n(): Agrega una columna con el tamaño de muestra efectivo (excluyendo los datos perdidos)
Más personalización de tbl_summary() con modify_()
Podemos modificar el nombre de las cabeceras, pero primero hay que saber cómo están guardadas.
Creamos la tabla cruda y la guardamos con un nombre:
bd_inmuno %>%select(edad, tdosis_refuerzo, IgG_Basal, IgG_Final, sexo) %>%tbl_summary(by = sexo, type =list(edad ~"continuous2"), label =list( edad ~"Age, years", tdosis_refuerzo ~"Time between second and third dose", IgG_Basal ~"IgG pre booster", IgG_Final ~"IgG post booster" )) -> tablatabla
Más personalización de tbl_summary() con modify_()
Podemos modificar el nombre de las cabeceras, pero primero hay que saber cómo están guardadas.
Creamos la tabla cruda y la guardamos con un nombre:
bd_inmuno %>%select(edad, tdosis_refuerzo, IgG_Basal, IgG_Final, sexo) %>%tbl_summary(by = sexo, type =list(edad ~"continuous2"), label =list( edad ~"Age, years", tdosis_refuerzo ~"Time between second and third dose", IgG_Basal ~"IgG pre booster", IgG_Final ~"IgG post booster" )) -> tablatabla
Luego, consultamos los nombres de cabeceras internos que tiene el objeto tbl_summary:
show_header_names(tabla)
Column Name Column Header
------------ ----------------------
label **Characteristic**
stat_1 **Femenino**, N = 189
stat_2 **Masculino**, N = 95
Podemos editar los nombres de las cabeceras llamándolos como label, stat_1 y stat_2.
Más personalización de tbl_summary() con modify_()
bd_inmuno %>%select(edad, tdosis_refuerzo, IgG_Basal, IgG_Final, sexo) %>%tbl_summary(by = sexo, type =list(edad ~"continuous2"), label =list( edad ~"Age, years", tdosis_refuerzo ~"Time between second and third dose", IgG_Basal ~"IgG pre booster", IgG_Final ~"IgG post booster" ))
modify_header(): Edita los nombres de las cabeceras.
Más personalización de tbl_summary() con modify_()
bd_inmuno %>%select(edad, tdosis_refuerzo, IgG_Basal, IgG_Final, sexo) %>%tbl_summary(by = sexo, type =list(edad ~"continuous2"), label =list( edad ~"Age, years", tdosis_refuerzo ~"Time between second and third dose", IgG_Basal ~"IgG pre booster", IgG_Final ~"IgG post booster" )) %>%modify_header( label ~"Variables", stat_1 ~"Female", stat_2 ~"Male" )
modify_header(): Edita los nombres de las cabeceras.
Más personalización de tbl_summary() con modify_()
bd_inmuno %>%select(edad, tdosis_refuerzo, IgG_Basal, IgG_Final, sexo) %>%tbl_summary(by = sexo, type =list(edad ~"continuous2"), label =list( edad ~"Age, years", tdosis_refuerzo ~"Time between second and third dose", IgG_Basal ~"IgG pre booster", IgG_Final ~"IgG post booster" )) %>%modify_header( label ~"Variables", stat_1 ~"Female", stat_2 ~"Male" )
modify_header(): Edita los nombres de las cabeceras.
Podemos editar el contenido de estas con {}
Por ejemplo, poner “n = {n}”
Más personalización de tbl_summary() con modify_()
:::: {.columns}
bd_inmuno %>%select(edad, tdosis_refuerzo, IgG_Basal, IgG_Final, sexo) %>%tbl_summary(by = sexo, type =list(edad ~"continuous2"), label =list( edad ~"Age, years", tdosis_refuerzo ~"Time between second and third dose", IgG_Basal ~"IgG pre booster", IgG_Final ~"IgG post booster" )) %>%modify_header( label ~"Variables", stat_1 ~"Female (n = {n})", stat_2 ~"Male (n = {n})" )
modify_header(): Edita los nombres de las cabeceras.
Podemos editar el contenido de estas con {}
Por ejemplo, poner “n = {n}”
::: {.column width=‘50%’}
Buenas y malas prácticas de reporte en investigación
Agenda
Reporte Reproducible
tbl_summary() paso a paso
gtsummary: tbl_summary y argumento by =
Buenas y malas prácticas de reporte en investigación
Misceláneas
Buenas y malas prácticas de reporte en investigación
Recomendaciones de reporte
No reporte valores p innecesarios, que no respondan sus preguntas de investigación pre-definidas.
Es una mala práctica reportar tablas comparativas descriptivas con valores p. Lamentablemente es muy difundida.
Varias guías, comenzando por STROBE (para observacionales) y CONSORT (para ensayos clínicos) explícitamente recomiendan en contra de reportar estas tablas. Solo haga una comparación descriptiva de los resultados de la tabla.
gtsummary and p-values
Se puede agregar el valor p en las tablas de gtsummary:
Sin embargo, a menos que sea parte del análisis principal, no recomendamos el uso de valores p en las tablas comparativas descriptivas (Tabla 1 o 2 de muchos artículos).
¿Qué dice STROBE?
La guía “Strengthening the reporting of observational studies in epidemiology (STROBE) statement” da algunas recomendaciones para tablas tipo 1:
¿Qué dice STROBE?
STROBE recomienda en contra de reportar valores p en las tablas descriptivas!!